%reduc1.m : Funcion que realiza submuestreo de una imagen promediando los pixels. 

function [T,x,y] = reduc1(n,fred,img)
%fred = factor de reduccion


if (fred <0) 
	error('Valor de factor de reduccion invalido.');
end

if (fred > (1-1/n))
   error('Valor de factor de reduccion invalido.');
end

dim = round(n*(1-fred));    % dimension de la imagen reducida

T = zeros(dim,dim);      
k = round(n/dim);     % filas o columnas a borrar

c=1;
f=1;

for ft=1:dim              % recorre filas de T       
	for ct=1:dim          % recorre columnas de T
		if (c+k)<=n && (f+k)<=n   % promedio con pixels a borrar      
			
			%d = uint8((img(f,c)+img(f,c+k-1)+img(f+k-1,c)+img(f+k-1,c+k-1))/4); 
			d = uint8((img(f,c+k-1)+img(f+k-1,c))/2);   
			%d = uint8((img(f,c)+img(f,c+k-1)+img(f+k-1,c))/3);
			
			T(ft,ct) = d;       
			c = c+ k;	     % avanzo columnas de img
	    else
			T(ft,ct) = img(f,c);      
        end			
	end	
	
    if (f+k)<=n
		f=f+k;      % avanzo filas de img
	end
	c = 1;
end

T = mat2gray(T, [0 255]);  % Convierte matriz a imagen
imwrite(T,'reducida1.pgm'); 